from greenlet import greenlet

'''
greenlet 是一个轻量级的协程库，它允许你在单个线程中创建和切换多个协程。
当一个协程正在运行时，它可以暂停并切换到另一个协程，然后再切换回原来的协程。这个过程需要手动完成。

API：
1. greenlet.switch() 切换到另一个协程
2. greenlet.parent 获取当前协程的父协程
3. greenlet.gr_frame 获取当前协程的帧对象
4. greenlet.gr_lasti 获取当前协程的最后一条指令
5. greenlet.gr_running 获取当前协程的运行状态
6. greenlet.gr_traceback 获取当前协程的跟踪信息
7. greenlet.gr_traceback_lasti 获取当前协程的最后一条指令的跟踪信息
8. greenlet.gr_traceback_lastline 获取当前协程的最后一条指令的行号

'''

# 定义第一个协程函数
def test1():
    print('启动 test1')
    gr2.switch()  # 切换到 gr2 协程，并执行 gr2 协程的代码，直到遇到 gr2.switch() 为止
    print('回到 test1')
    gr2.switch()  # 再次切换到 gr2 协程

# 定义第二个协程函数
def test2():
    print('启动 test2')
    gr1.switch()  # 切换到 gr1 协程
    print('回到 test2')

# 创建 greenlet 对象
gr1 = greenlet(test1)
gr2 = greenlet(test2)

# 启动第一个协程
gr1.switch()

